<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class f_fornecedor extends CI_Controller {
    private $sessao = "";

    function __construct(){
        parent::__construct();
        $this->load->model("FornecedorModel");
        $this->load->model("Log");

        $this->load->helper("auth");
        $this->sessao = f_logado();
    }

    public function index($mensagem = "")
    {
        if($mensagem == "sucesso") $mensagem = "\nOperação realizada com Sucesso!\n";
        else $mensagem = "";
        $dados = array(
            "titulo" => "Página Principal",
            "user" => $this->sessao->nome,
            "mensagem" => $mensagem
            );

        $main = array(
            "dados" => $dados,
            "link" => "fornecedor/f_home_view",
            );
        $this->Log->inserir(tipo_usuario(), id_tipo_usuario(), "listou", "produto");
        $this->load->view("template", $main);
    }

    public function editar(){

        $this->load->helper("form");
        $this->load->library("form_validation");

        $res = $this->db->get("estados");

        if( $res->num_rows() > 0 ) :
            $estados = "";
            foreach($res->result() as $estado) :
                if( $estado->abrev_uf == $this->sessao->estado ):
                    $estados .= "<option value=\"$estado->abrev_uf\" selected=\"selected\">$estado->nm_uf</option>\n";

                else :
                    $estados .= "<option value=\"$estado->abrev_uf\">$estado->nm_uf</option>\n";
                endif;
            endforeach;
        endif;

        $local = foto_fornecedor_local($this->sessao->idFornecedor);
        $dados = array(
            "titulo" => "Edição de perfil",
            "user" => $this->sessao->nome,
            "fornecedor" => $this->sessao,
            "estados" => $estados,
            "foto" => foto_fornecedor($this->sessao->idFornecedor),
            "erro" => ""
            );
        $main = array(
            "dados" => $dados,
            "link" => "fornecedor/f_edit_fornecedor_view",
            );

        $this->form_validation->set_rules('nome', 'Nome', 'required|min_length[4]');
        $this->form_validation->set_rules('sobrenome', 'Sobrenome', 'required|min_length[4]');
        $this->form_validation->set_rules('razaosocial', 'Raz&atilde;o Social', 'required');
        $this->form_validation->set_rules('cnpj', 'CNPJ', 'required|callback_cnpj_check|callback_cnpj_validacao');
        $this->form_validation->set_rules('email', 'E-mail', 'required|valid_email|callback_email_check');
        $this->form_validation->set_rules('website', 'Website');
        $this->form_validation->set_rules('telefone', 'Telefone', 'required');
        $this->form_validation->set_rules('pais', 'Pa&iacute;s', 'required');
        $this->form_validation->set_rules('cidade', 'Cidade', 'required');
        $this->form_validation->set_rules('estado', 'Estado', 'required');
        $this->form_validation->set_rules('senha', 'Senha', 'md5');
        $this->form_validation->set_rules('senha2', 'Confirmar senha', 'matches[senha]');
        $this->form_validation->set_rules('endereco', 'Endereco', 'required');
        $this->form_validation->set_rules('numero', 'Numero', 'required');
        $this->form_validation->set_rules('complemento', 'Complemento');
        $this->form_validation->set_rules('cep', 'CEP', 'required|exact_length[8]');

        if ($this->form_validation->run() == false) :
            $this->load->view('template', $main);

        else :

            $dir = './fotos/fornecedor/';
            $config['upload_path'] = $dir;
            $config['allowed_types'] = 'gif|jpg|png';
            $config['file_name'] = $config['file_name'] = "arquivo_novo";;
            $config['max_size']	= '1000';
            $config['max_width']  = '1024';
            $config['max_height']  = '768';

            $this->load->library('upload', $config);
            $this->upload->initialize($config);
            $this->upload->do_upload();
            if( strstr("Você não selecionou um arquivo para envio", $this->upload->display_errors())){
                $dados['erro'] = $this->upload->display_errors();
                $main['dados'] = $dados;
                $this->load->view('template', $main);
            }
            else{

                $campos = array(
                    "nome" => $this->input->post("nome"),
                    "sobrenome" => $this->input->post("sobrenome"),
                    "razaoSocial" => $this->input->post("razaosocial"),
                    "cnpj" => $this->input->post("cnpj"),
                    "email" => $this->input->post("email"),
                    "website" => $this->input->post("website"),
                    "telefone" => $this->input->post("telefone"),
                    "pais" => $this->input->post("pais"),
                    "cidade" => $this->input->post("cidade"),
                    "estado" => $this->input->post("estado"),
                    "fax" => $this->input->post("fax"),
                    "celular" => $this->input->post("celular"),
                    "endereco" => $this->input->post("endereco"),
                    "numero" => $this->input->post("numero"),
                    "cep" => $this->input->post("cep"),
                    "complemento" => $this->input->post("complemento")
                    //"ultimaModificacao" => strtotime()
                );

                $this->FornecedorModel->update($this->sessao->idFornecedor, $campos);
                $fornecedor = $this->FornecedorModel->getFornecedor($this->sessao->idFornecedor);
                $fornecedor->tipo = "fornecedor";
                $this->session->set_userdata('user',$fornecedor);

                $data_file = $this->upload->data();
                if($data_file["is_image"] != "" && $local != false){
                    print_r($this->upload->data());
                    unlink($local);
                }
                $data_file = $this->upload->data();
                rename("fotos/fornecedor/arquivo_novo".$data_file['file_ext'], "fotos/fornecedor/$id".$data_file['file_ext']);

                $this->Log->inserir("fornecedor", $this->sessao->idFornecedor, "editou", "fornecedor", $this->sessao->idFornecedor);
                redirect("home/index/sucesso");
                }
        endif;
    }

    function email_check($str){
        $email = explode("@",$str);
        if ( $email[1] == "admin.com"){
            $this->form_validation->set_message('email_check', 'ERRO.');
            return FALSE;
        }
        elseif($str == $this->sessao->email)
            return TRUE;
        elseif($this->FornecedorModel->getFornecedorCnpj($str)){
            $this->form_validation->set_message('email_check', 'Já existe um fornecedor com este e-mail');
            return FALSE;
        }
        else 
            return TRUE;
    }

    function cnpj_check($str){
        if($str == $this->sessao->cnpj)
            return TRUE;
        elseif($this->FornecedorModel->getFornecedorCnpj($str) != false) {
            $this->form_validation->set_message('cnpj_check', 'Já há um cadastro com este CNPJ.');
            return FALSE;
        }

        else 
            return TRUE;
    }

    function cnpj_validacao($cnpj){
        $this->form_validation->set_message('cnpj_validacao', 'Digite um CNPJ Valido.');
        if (strlen($cnpj) <> 18) return FALSE;
        $soma1 = ($cnpj[0] * 5) +

        ($cnpj[1] * 4) +
        ($cnpj[3] * 3) +
        ($cnpj[4] * 2) +
        ($cnpj[5] * 9) +
        ($cnpj[7] * 8) +
        ($cnpj[8] * 7) +
        ($cnpj[9] * 6) +
        ($cnpj[11] * 5) +
        ($cnpj[12] * 4) +
        ($cnpj[13] * 3) +
        ($cnpj[14] * 2);
        $resto = $soma1 % 11;
        $digito1 = $resto < 2 ? 0 : 11 - $resto;
        $soma2 = ($cnpj[0] * 6) +

        ($cnpj[1] * 5) +
        ($cnpj[3] * 4) +
        ($cnpj[4] * 3) +
        ($cnpj[5] * 2) +
        ($cnpj[7] * 9) +
        ($cnpj[8] * 8) +
        ($cnpj[9] * 7) +
        ($cnpj[11] * 6) +
        ($cnpj[12] * 5) +
        ($cnpj[13] * 4) +
        ($cnpj[14] * 3) +
        ($cnpj[16] * 2);
        $resto = $soma2 % 11;
        $digito2 = $resto < 2 ? 0 : 11 - $resto;
        if (($cnpj[16] == $digito1) && ($cnpj[17] == $digito2))
            return TRUE;
        else{
            return FALSE;
        }
    }

}